You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Adds a persistent per-student course bookmark and wishlist system with shared frontend state, optimistic updates, filtering, sorting, navigation counts, and safe handling of unavailable courses.
udaycodespace
added
ECSoC26
Required label for a PR to be eligible for Sentinel scoring
redo
Reviewed — needs changes before it can be merged
labels
Jul 23, 2026
Adds a persistent per-student course bookmark and wishlist system with shared frontend state, optimistic updates, filtering, sorting, navigation counts, and safe handling of unavailable courses.
Thanks for the review instructions. I have updated the PR validation checklist and added supporting testing evidence.
udaycodespace
added
good-issue
PA-awarded bonus for a well-written, well-scoped issue — +10 XP
in review
PR is up and waiting on maintainer review
and removed
redo
Reviewed — needs changes before it can be merged
labels
Jul 24, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
ECSoC26-L2Medium difficulty, auto-assigned by Sentinel — 10 pointsECSoC26Required label for a PR to be eligible for Sentinel scoringgood-issuePA-awarded bonus for a well-written, well-scoped issue — +10 XPin reviewPR is up and waiting on maintainer review
2 participants
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Adds a persistent per-student course bookmark and wishlist system with shared frontend state, optimistic updates, filtering, sorting, navigation counts, and safe handling of unavailable courses.
Fixes #19
Backend changes
Added a dedicated course-bookmark Mongoose model
Added a compound unique index on user ID and course ID
Added protected student-only bookmark routes
Added endpoints to:
Added duplicate prevention
Added pagination
Added course, category, and educator search
Added category filtering
Added free and paid filtering
Added available and deleted-course filtering
Added recently saved, title, and price sorting
Added safe handling for courses removed after being bookmarked
Frontend changes
BookmarksProviderBookmarkButtonPersistence and synchronization
Bookmark data is stored per authenticated student in MongoDB.
Bookmark state remains synchronized across:
The state also reloads correctly after a page refresh.
Validation
Documentation
Added:
The document covers API endpoints, database rules, frontend integration, optimistic updates, deleted-course handling, and manual testing.